/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/*
 * pnlRS_Filtros.java
 *
 * Created on 20/07/2011, 00:55:45
 */
package Presentacion.ReporteStock;

import Negocio.GenerarReporteStock;
import Negocio.Modelo.Producto;
import Negocio.Modelo.Proveedor;
import Presentacion.SIPGUIView;
import java.util.List;

/**
 *
 * @author NicolasM
 */
public class pnlRS_Filtros extends javax.swing.JPanel {

    private int nroPaso;
    private pnlReporteStock parent;
    private GenerarReporteStock proceso;

    public pnlRS_Filtros(pnlReporteStock parent, GenerarReporteStock proceso, int nroPaso) {
        initComponents();

        this.nroPaso = nroPaso;
        this.parent = parent;
        this.proceso = proceso;

        //Cargo los combos
        CargarComboProveedores();
        CargarComboProductos();
    }


    @Override
    public void setVisible(boolean visible) {
        super.setVisible(visible);

        if (visible) {
            SIPGUIView.getInstance().SeleccionarNumeroPaso(nroPaso);
        }
    }

    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        lblProveedor = new javax.swing.JLabel();
        cboProveedores = new javax.swing.JComboBox();
        lblProducto = new javax.swing.JLabel();
        cboProductos = new javax.swing.JComboBox();
        btnSiguiente = new javax.swing.JButton();
        chkFiltrarProveedor = new javax.swing.JCheckBox();
        chkFiltrarProducto = new javax.swing.JCheckBox();

        setName("Form"); // NOI18N

        org.jdesktop.application.ResourceMap resourceMap = org.jdesktop.application.Application.getInstance(Presentacion.SIPGUIApp.class).getContext().getResourceMap(pnlRS_Filtros.class);
        lblProveedor.setText(resourceMap.getString("lblProveedor.text")); // NOI18N
        lblProveedor.setEnabled(false);
        lblProveedor.setName("lblProveedor"); // NOI18N

        cboProveedores.setEnabled(false);
        cboProveedores.setName("cboProveedores"); // NOI18N

        lblProducto.setText(resourceMap.getString("lblProducto.text")); // NOI18N
        lblProducto.setEnabled(false);
        lblProducto.setName("lblProducto"); // NOI18N

        cboProductos.setEnabled(false);
        cboProductos.setName("cboProductos"); // NOI18N

        btnSiguiente.setText(resourceMap.getString("btnSiguiente.text")); // NOI18N
        btnSiguiente.setName("btnSiguiente"); // NOI18N
        btnSiguiente.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnSiguienteActionPerformed(evt);
            }
        });

        chkFiltrarProveedor.setText(resourceMap.getString("chkFiltrarProveedor.text")); // NOI18N
        chkFiltrarProveedor.setName("chkFiltrarProveedor"); // NOI18N
        chkFiltrarProveedor.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                chkFiltrarProveedorActionPerformed(evt);
            }
        });

        chkFiltrarProducto.setText(resourceMap.getString("chkFiltrarProducto.text")); // NOI18N
        chkFiltrarProducto.setName("chkFiltrarProducto"); // NOI18N
        chkFiltrarProducto.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                chkFiltrarProductoActionPerformed(evt);
            }
        });

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
        this.setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                .addContainerGap(352, Short.MAX_VALUE)
                .addComponent(btnSiguiente)
                .addContainerGap())
            .addGroup(layout.createSequentialGroup()
                .addGap(32, 32, 32)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(layout.createSequentialGroup()
                        .addComponent(lblProducto, javax.swing.GroupLayout.PREFERRED_SIZE, 58, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                        .addComponent(cboProductos, javax.swing.GroupLayout.PREFERRED_SIZE, 268, javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addGroup(layout.createSequentialGroup()
                        .addComponent(lblProveedor, javax.swing.GroupLayout.PREFERRED_SIZE, 62, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                        .addComponent(cboProveedores, javax.swing.GroupLayout.PREFERRED_SIZE, 270, javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addComponent(chkFiltrarProducto)
                    .addComponent(chkFiltrarProveedor))
                .addContainerGap(75, Short.MAX_VALUE))
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                .addGap(52, 52, 52)
                .addComponent(chkFiltrarProveedor)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(lblProveedor)
                    .addComponent(cboProveedores, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addGap(43, 43, 43)
                .addComponent(chkFiltrarProducto)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(lblProducto)
                    .addComponent(cboProductos, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 75, Short.MAX_VALUE)
                .addComponent(btnSiguiente)
                .addContainerGap())
        );
    }// </editor-fold>//GEN-END:initComponents

    private void btnSiguienteActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnSiguienteActionPerformed
        
        long filtroProveedor;
        String filtroProducto;
        
        if (chkFiltrarProveedor.isSelected()){
            filtroProveedor = ((ComboProveedorItem)cboProveedores.getSelectedItem()).getCuit();
        }
        else{
            filtroProveedor = -1;
        }
        
        if (chkFiltrarProducto.isSelected()){
            filtroProducto = ((ComboProductosItem)cboProductos.getSelectedItem()).getCodigoProducto();
        }
        else{
            filtroProducto = "";
        }
        
        
        proceso.SetearFiltros(filtroProveedor, filtroProducto);
        this.SiguientePaso();
}//GEN-LAST:event_btnSiguienteActionPerformed

    private void chkFiltrarProveedorActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_chkFiltrarProveedorActionPerformed
        lblProveedor.setEnabled(chkFiltrarProveedor.isSelected());
        cboProveedores.setEnabled(chkFiltrarProveedor.isSelected());
        
    }//GEN-LAST:event_chkFiltrarProveedorActionPerformed

    private void chkFiltrarProductoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_chkFiltrarProductoActionPerformed
        lblProducto.setEnabled(chkFiltrarProducto.isSelected());
        cboProductos.setEnabled(chkFiltrarProducto.isSelected());
    }//GEN-LAST:event_chkFiltrarProductoActionPerformed
    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JButton btnSiguiente;
    private javax.swing.JComboBox cboProductos;
    private javax.swing.JComboBox cboProveedores;
    private javax.swing.JCheckBox chkFiltrarProducto;
    private javax.swing.JCheckBox chkFiltrarProveedor;
    private javax.swing.JLabel lblProducto;
    private javax.swing.JLabel lblProveedor;
    // End of variables declaration//GEN-END:variables

    private void CargarComboProveedores() {
        List<Proveedor> proveedores = proceso.getProveedores();
        for (Proveedor proveedor : proveedores) {
            cboProveedores.addItem(new ComboProveedorItem(proveedor));
        }
    }

    private void CargarComboProductos() {
        List<Producto> productos = proceso.getProductos();
        for (Producto producto : productos) {
            cboProductos.addItem(new ComboProductosItem(producto));
        }
    }

    private void SiguientePaso() {
        parent.SiguientePaso(nroPaso);
    }

    private void PasoAnterior() {
        parent.PasoAnterior(nroPaso);
    }

    class ComboProveedorItem {

        private Proveedor proveedor;

        public long getCuit(){
            return proveedor.getCuit();
        }
        
        public ComboProveedorItem(Proveedor proveedor) {
            this.proveedor = proveedor;
        }

        @Override
        public String toString() {
            return this.proveedor.getRazonSocial();
        }
    }

    class ComboProductosItem {

        private Producto producto;

        public String getCodigoProducto() {
            return producto.getCodigo();
        }

        public ComboProductosItem(Producto producto) {
            this.producto = producto;
        }

        @Override
        public String toString() {
            return this.producto.getNombre();
        }
    }
}
